name: "Deep Classifier: Runner"

permissions:
  id-token: write
  contents: read

on:
  schedule:
    - cron: 0 * * * *
  workflow_dispatch:
  repository_dispatch:
    types: [trigger-deep-classifier-runner]

jobs:
  main:
    runs-on: ubuntu-latest
    environment: main
    steps:
      - uses: azure/login@v2
        with:
            client-id: ${{ vars.AZURE_CLIENT_ID }}
            tenant-id: ${{ vars.AZURE_TENANT_ID }}
            allow-no-subscriptions: true
      - name: Checkout Actions
        uses: actions/checkout@v4
        with:
          repository: "microsoft/vscode-github-triage-actions"
          ref: stable
          path: ./actions
      - name: Install Actions
        run: npm install --production --prefix ./actions
      - name: Install Additional Dependencies
        # Pulls in a bunch of other packages that arent needed for the rest of the actions
        run: npm install @azure/storage-blob@12.1.1 mongodb@2.2.31
      - name: "Run Classifier: Scraper"
        uses: ./actions/classifier-deep/apply/fetch-sources
        with:
          # slightly overlapping to protect against issues slipping through the cracks if a run is delayed
          until: 5
          excludeLabels: feature-request|testplan-item
          configPath: classifier
          blobContainerName: vscode-issue-classifier
          blobStorageKey: ${{secrets.AZURE_BLOB_STORAGE_CONNECTION_STRING}}
          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
      - name: Set up Python 3.7
        uses: actions/setup-python@v5
        with:
          python-version: 3.7
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install --upgrade numpy==1.20.0 scipy==1.6.0 scikit-learn==0.24.1 joblib==1.0.0 nltk==3.5 simpletransformers==0.51.16 torch==1.7.1 torchvision==0.8.2
      - name: "Run Classifier: Generator"
        run: python ./actions/classifier-deep/apply/generate-labels/main.py
      - name: "Run Classifier: Labeler"
        uses: ./actions/classifier-deep/apply/apply-labels
        with:
          configPath: classifier
          allowLabels: "info-needed|new release|error-telemetry|*english-please|translation-required"
          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
